//
//  main.m
//  JBOC_03集合1
//
//  Created by dllo on 16/7/6.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    
      //1.数组
      //数组:可变数组 与 不可变数组
      //数组主要是有序的存放的集合类型,并且可以通过下标取值
      //注意:数组中只能存放对象类型
      //不可变数组只能取值
      //可变数组 可以进行删改
      //2初始化数组
      // (1)initwithObjects后面填入的参数一定是对象类型
      // 可变参数 省略号是C语言的一个链表
      //顺序填入你需要的元素
      NSArray *array = [[NSArray alloc]initWithObjects:@"123", nil, @"234", @"345", @"456", nil];
      NSLog(@"array = %@", array);
      //(2)构造器方法
      NSArray *arr = [NSArray arrayWithObjects:@"123", nil, @"234", @"345", @"456", nil];
      NSLog(@"arr = %@", arr);
      //(3)字符串 同 nsstring nsarray@[]
      //三种初始化方法推荐使用字面量 用字面量的好处是报错..
      //字面量可以识别,对象是否是空值;但一般初始化方法不可以 如果为空字面量崩溃 但是
      //
      NSArray *myArray = @[@"123",/** nil, */ @"234", @"345", @"456"];
      NSLog(@"myArray = %@", myArray);
      
      
      //取值相关
      //<1>count : 取到数组中元素的个数
      NSLog(@"%ld", arr.count);
      //<2>数组中取值 通过下标去取值
    NSString *numberString = [arr objectAtIndex:0];
      //<3> 语法糖 取值方式 快捷取值
     NSString *numberStr = arr[0];
     NSInteger indexOfObject = [arr indexOfObject:@"123"];
      NSLog(@"%ld", indexOfObject);
      //判断对象是否在数组中
      BOOL isHabeObject = [arr containsObject:@"123"];
      NSLog(@"%@", isHabeObject ? @"YES": @"NO");
      //不可变数组改变元素(会生成新的数组, 不会在原数组的基础上修改)
      [arr firstObject];
      [arr lastObject];
      arr = [arr arrayByAddingObject:@"234"];
      NSLog(@"%@", arr);
      //数组添加另一个数组中的所有元素
      arr = [arr arrayByAddingObjectsFromArray:array];
      NSLog(@"arr = %@", arr);
      //可变数组
     // NSMutableArray
      //1<初始化方法>
      //遇到可变数组,只能使用初始化方法或者便利构造器
      NSMutableArray *mutableArray = [NSMutableArray array];
      //字面量创建方法 !!不推荐大家使用
 //     NSMutableArray *mutableArray = [@[] mutableCopy];
      //2取值方式与不可变数组一样
      //3可变数组改变元素
      [mutableArray addObject:@"123"];
      // <2>数组中插入元素
      [mutableArray insertObject:@"含蓄" atIndex:0];
      // 3 移除第0个元素
      [mutableArray removeObjectAtIndex:0];
      //移除最后一个
//      [mutableArray removeLastObject];
//      //移除全部
//      [mutableArray removeAllObjects];
      // 替换 使用替换时 数组对应位置不能为空
      [mutableArray replaceObjectAtIndex:0 withObject:@"含蓄"];
      NSLog(@"mutableArray = %@", mutableArray);
      // 可变与不可变的区别
      //1 可变是可以修改的,但不可变不可以
      //2不可变调用改变方法时,会生成对象, 可变调用改变方法时,在对象本身进行修改
      //3可变 继承于   不可变
      //将字符串根据某个子串截取成数组
      //子串消失
NSString *urlstring = @"www.baidu.com";
     NSArray *urlArray = [urlstring componentsSeparatedByString:@"."];
      NSLog(@"%@", urlArray);
      //根据某个字符串 把数组拼接成字符串
      NSArray *nameArray = @[@"韩旭", @"隔壁", @"老黄"];
      NSString *nameString =  [nameArray componentsJoinedByString:@"&"];
      NSLog(@"%@", nameString);
      
      return 0;
}
